/*
 * malloc.cpp
 *  自己管理内存 malloc
 *  Created on: 2015年10月10日
 *      Author: LiXiujie
 */
#include <iostream>
class A{
public:
	static A* Construct(int a){
		A* pA = (A*)malloc(sizeof(struct A));
		//pA->A::A(a);
		std::cout <<  "A::Construct() malloc after()" << std::endl;
		new(pA) A(a);
		return pA;
	}

	static void Destruct(A* pA){
		pA->A::~A();
		free(pA);
	}
	void p(){
		std::cout <<  m_nA << std::endl;
	}
private:
	A(int a){
		std::cout <<  "A(int a)" << std::endl;
		m_nA = a;
	}
	~A(){
		m_nA = 0;
		std::cout <<  "~A()" << std::endl;
	}
	int m_nA;
};

int main(int argc, char *argv[]){
	A* pA = A::Construct(6);

	pA->p();
	A::Destruct(pA);
	pA = A::Construct(99);
	pA->p();
	A::Destruct(pA);
	return 0;
}



